/**
 *
 * 读取单个文件信息用此类
 * 
 */
class Resource {
    /** 默认根目录 */
    private static rootDir: string = "./resource/";
    
    /**
     * 设置根目录
     */
    public static init(rootDir: string): void {
        if(rootDir != null) {
            if(rootDir.charAt(rootDir.length - 1) != "/") {
                rootDir += "/";
            }
            this.rootDir = rootDir;
        }
    }
    /**
     * 获取根目录
     */
    public static getRoot(): string {
        return this.rootDir;
    }
    
    /**
     * 获取assets目录
     */ 
    public static getAssets(): string {
        return this.rootDir +"assets/";
    }
    /**
     * 获取工程创建时默认的资源加载目录
     */
    public static getDefaultRes(): string {
        return this.rootDir + "default.res.json";
    }
    /**
     * 获取工程创建时默认的样式目录
     */
    public static getDefaultThm(): string {
        return this.rootDir + "default.thm.json";
    }
    
    public static getDefaultExmlDir():string{
        return this.rootDir + "eui_skins/";
    }
    
    
    /**
     * 加载资源，如果内存中有读取内存中资源，否则异步读取资源
     */
    public static loadAsset(source: string,compFunc: Function,thisObject: any): void {
        function onGetRes(data: any): void {
            compFunc.call(thisObject,data,source);
        }
//        Log.d("\\\\\\\\loadAsset");
        if(RES.hasRes(source)) {
            var data = RES.getRes(source);
            if(data) {
//                Log.d("\\\\\\\\onMemory:" + source);
                onGetRes(data);
            }
            else {
//                Log.d("\\\\\\\\onAsync:" + source);
                RES.getResAsync(source,onGetRes,this);
            }
        }
        else {
//            Log.d("\\\\\\\\getResByUrl");
            RES.getResByUrl(source,onGetRes,this,RES.ResourceItem.TYPE_IMAGE);
        }
    }
    /**
     * 加载样式
     */
    public static loadTheme(url: string,compFunc: Function,errorFunc: Function,thisObject: any): void {

        function onGetRes(e: string): void {
            compFunc.call(thisObject,e);
        }

        function onError(e: RES.ResourceEvent): void {
            if(e.resItem.url == url) {
                RES.removeEventListener(RES.ResourceEvent.ITEM_LOAD_ERROR,onError,null);
                errorFunc.call(thisObject);
            }
        }

        RES.addEventListener(RES.ResourceEvent.ITEM_LOAD_ERROR,onError,null);
        RES.getResByUrl(url,onGetRes,this,RES.ResourceItem.TYPE_TEXT);
    }

    public static destoryRes(name: string,force?: boolean) {
        RES.destroyRes(name,force);
    }



}
